import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
data=pd.read_csv('data-simple.csv',sep=',', names=['user_id','item_id','rating'], header=0)


# 用户-物品矩阵
# m用户数  n商品数
m_users = data.user_id.nunique()
n_items = data.item_id.nunique()
print('用户个数', m_users) # 返回不重复user_id的个数，统计用户的个数
print('物品个数', n_items) # 统计物品的个数

user_item_matrix = np.zeros((m_users,n_items))  # 创建一个全是0的m*n的矩阵
for line in data.itertuples():
    user_item_matrix[line[1]-1,line[2]-1]=line[3]
    '''
    因为user_id 和 item_id都是从1开始编号的，而矩阵的索引是从零开始
    data数据的第二列为user_id，第三列为item_id，第三列则为对应user对item的评分
    '''
print(user_item_matrix)    #展示一下用户物品矩阵

# 用户物品矩阵的稀疏性
sparsity = round(len(user_item_matrix.nonzero()[1])/float(m_users*n_items),3)
print('用户物品矩阵的稀疏性', sparsity)    #展示一下用户物品矩阵
